home *** CD-ROM | disk | FTP | other *** search
- The Raydeal Game Faq v1.03
- by Matt Howard, with irritating comments by Gene Buckle.
-
- TOC
-
- Section 1 The Game
- 1. What is the Raydeal game?
- 2. What still needs to be done to the game?
- 3. How will the game be marketed?
- 4. Who's involved in the project already?
- 5. How do I get involed? What's in it for me?
- 6. Misc.
- 7. The Future(!?)
-
- Section 2 The Code
- 1. Programming Overview And Notes
- 2. File Structure
- 3. Known Bugs
- 4. Things to be fixed with the engine
-
- Section 3 The History
- 1. A brief history of raydeal
- 2. A brief history of the FAQ
-
- Section 1: The Game
- ---------------------------------
-
- 1.1 What is the Raydeal game?
-
- The Raydeal game is a game based on the recently released Raydeal
- game engine, also known as the Nottingham engine. The idea is to
- create a much more stategic and expanded Deathmatch. In other
- words, people will now not only be in charge of their own survival,
- but will also control bases, defenses, etc. Teams of people will be
- pitted against eachother, in charge of capturing their oppenents
- base (or in a larger game, multiple bases). Hopefully, the end
- result will be a ten on ten all out strategic war, all in real-time
- 3-d. It'll probably take a lot longer than a normal deathmatch.
- Environments will be mostly outdoor forests and the like, while
- base will be interior DOOM like buildings. Obviously levels will
- all be a lot more complex in the real game.
-
- The game will be developed to run across the internet. Various
- computers will link into a server for a game.
-
- It may be developed on Win95, but a DOS version will probably be
- availible first.
-
- -------------------------------------------------------------------
-
- 1.2 What still needs to be done to the game?
-
- Debugging. The engine needs to be completely debugged before we
- get wildadding new features -TGOM[1]
-
-
- Networking- I think this game should definitely be an
- Internet game- it should also be playable over IPX networks.
-
- Windows Port- This really ought to be finished. Coding networking
- in Windows would be a lot easier, as it could just be a Winsock
- app.
-
- Level Editor plus Levels- A friend of mine wrote an editor a while
- ago but it sucked (took me about three hours of hand editing to get
- his level to work). A rewrite might be neccesary. We also thought
- about random level generation, but that might be really impossible.
- I think and editor is easier.
-
- A lot of object coding- we need to setup how more defenses work, as
- well as a system for placing them on the map.
-
- Sound- just need to add support for other cards, plus some original
- tunes written by other people
-
- Graphics- we need better textures
- -----------------------------------------------------------------
- -----
-
- 1.3 How will the game be marketed?
-
- We have no commercial publisher. We do not want one. The game will
- be marketed freeware.
-
- This last list sounds like a lot, but consider that if we're not up
- to coding these, we can move on, since it doesn't have a commercial
- publisher.
-
- I think it'd be a good idea to get an early version availible as
- soon as possible to build some hype.
- -----------------------------------------------------------------
- ---------
-
- 1.4 Who is involved with the game already?
-
- Currently, the de facto project leaders are myself (Matt Howard)
- and Gene Buckle. This is only because, for the moment, we're the
- ones doing the most work. Here is the complete list of people
- involved:
-
- Matt Howard (weirdo@primenet.com) Project creator & engine coder
-
- Gene Buckle (u-gwb@nta.com) Head communications coder and the man
- with the plan. (NOT! I'm the [1]Token Grouchy Old Man)(Sure Gene.
- Oh, and the big vision at the bottom was written by, who?)
-
- Brian Cowan (cowanb@limestone.kosone.com) Enthusiastic coder ready
- to do anything
-
- Dave Cornish (dmc@nwrain.net) The head artist so far
-
- Andrew Warnick (awarnick@wwdc.com) Willing to code net stuff and
- also editor
-
- Robert Parenton <parenton@airmail.net> Artist/Coder
-
- William Forsche <wforsche@athenet.net> Artist / Model maker
-
- Matt Douglass (mdouglass@earthlink.net) Code Optimizer?
-
- Josh Glazer (VBunny@aol.com) ????
- -----------------------------------------------------------------
- -------------
-
-
- 1.5 How do I get involved? What's in it for me?
-
- To become a coder, artist, musician, etc, all you have to do is
- mail me. Tell me what parts of the game you would like to work on,
- and I will get you in touch with the right people.
-
- What do you get out of it? NOT MONEY. That's right. Since we're
- making the game for free, no one's gonna get any cash. BUT, YOU GET
- RECOGNITION. Game companies are constantly looking, almost above
- all other factors, for people who've been involved on successful,
- completed projects. This project can get you that. It also shows
- you are a creative person will to take risks. In other words, be
- involved on this project could be a great way to break into the
- game industry.
-
- Moreover, you get to be involved in a cutting edge production on
- the sole condition that you're interested. Ya just can't find that
- many other places.
- -----------------------------------------------------------------
- -------
-
- 1.6 Misc:
-
- There is a discussion channel on us.undernet.org called #raydeal.
- Either me (handle theweirdo) or Gene (tspectre) are almost always
- there.
-
- 1.7 The Future:
- ---------------
- Raydeal: The Vision. (or, "what other neat and impossible to code
- things can I think of this afternoon?") by Gene Buckle
-
- Imagine a game that had all the strategic elements of boardgames
- like Risk or computer games like Empire, with all the in-your-face
- death and destruction that Doom offers. Sound good? That's what
- I'd like to see this game evolve into.
-
- The game should not be constrained to only person to person ground
- combat. We can add vehichles! Just think of the fun you could
- have in a tank battle. Tanks would be great, but why not add small
- teams with mortars or howitzers? From there, things like mine
- fields could be added to add just the right amount of terror to the
- ground pounders attacking your base! The vehicle concept can be
- taken another step further by adding small helicopters and
- airplanes. Now not only does Johnny Grunt have to worry about
- tanks, trucks and minefields, but he as to look up as well to make
- sure he doesn't get strafed by that crazy bastard flying the
- airplane at 250 feet off the deck. Helicopters could be used to
- insert multi-player teams behind enemy lines for a little behind
- the scenes special forces work. From this, we can add all sorts of
- nasty little goodies. Things like LAAW and TOW missle launchers,
- pillboxes with fixed guns (you can aim it, but you can't take it
- with you), pit traps, etc.
-
- Another expansion should be some kind of economic scale. This
- would entail team leaders having to buy (or steal!) equipment for
- their team. Assets should not be inexhaustable either. If a player
- decides to waste a few dozen planes in suicide missions against
- another players' fortress, those planes are *gone* until his
- "factories" can build new planes, or he can buy or steal
- replacements. This would add a bit more "realism" to the game as
- it's played out. Players could respawn immediately if killed, but
- if they were driving a tank at the time, they've got to either
- obtain another one from the motor pool, or steal one from another
- unsuspecting player.
-
- Mercenary forces can also be used for those players that don't want
- to align themselves with a particular team. This opens up the
- possibilty of groups of mercenary players attacking resupply
- convoys and reselling the goods to the highest bidder. A black
- market of sorts. This would also add a nice touch of realism to
- the game.
-
- There are limitless possibilities for the game as it stands, and if
- we work together on this, a lot of it can become a reality!
-
- As you can see, my particular vision for this great 3d game engine
- that Matt has designed is quite vast. Some of what I'd like to see
- will never come to pass and some things that I've never thought of
- before will be added. The end result will be the same however. A
- game that can be played and enjoyed by *anyone* reguardless of how
- quick their reflexes are or how smart they are.
-
- By hosting the game on the internet, it will attract a lot of
- players from many diverse backgrounds, which unto itself will add
- to the entertainment of the whole.
-
-
- ----------------------------
- And now, Matt will attempt to bring us all back to reality.
- ----------------------------
-
- Section 2: The Code
- ----------------------------
-
- 2.1: Programming Overview And Notes
-
- So far this is pretty brief. You'll have to make due till a more in
- depth version comes out.
-
- The following are notes to the reviewing programmer.
- This program is spread out into several modules, many of which are
- themselves several files large. In general, for source code names
- which are not self-explanatory:
- a file prefix means it has to do with world file i/o
- a ray prefix either has to do with rendering or is from an
- older time when all files were ray prefixed
- a scr prefix means it has to do with screen management
- an spr prefix means it has to do with sprites/objects
- a vox prefix means it has to do with mountain rendering
-
- Many of the sources are commented, but a few are not. In general,
- its not at all cryptic code. I've tried to adhere to the general
- philosophies of structured programming.
-
- Important files:
-
- gamerun.cpp - overall managing file. Runs almost everything
- dosrun.cpp - actual location of main() in DOS version. Just turns
- control over to gamerun.cpp
- rayinit.cpp - starts up and shuts down most system independent
- stuff
- raycast.cpp + bsptree.cpp - make up the meat of the overall
- renderer
- sprrend.cpp - the sprite renderer
- voxrend.cpp - c portion of mountain renderer
- filemain.cpp - overall managing file for world file i/o
- player.cpp - file that controls the player
- ray.h - info given to almost all files
- globals.h - global variables (I used to use globals, and now don't,
- but I still have relics)
- rayrend.h - h file for renderer
- rayfile.h - h file for world file i/o
- voxel.h - h file for mountain internal files
- voxinter.h - h for for mountain external files that want to use
- mountains
- sprutils.h + rayspr.h + rayspr.h - h files for sprites
-
- Command-line options:
-
- -noshade turns off mountain shading
- -fastvox makes mountains render faster but not as nicely
- (does not effect shading)
-
- I haven't tried these in a long time, so I don't know if they work:
- -file uses alternate world file (will actually load DOOM wads too)
- -ftex use alternate world for floor textures
- -wtex same but for walls
-
- A few idiosyncracies:
-
- mix of the terms sprite and object- Technically, a sprite refers to
- a specific type of object, on that rendered as a moving bitmap.
- However, in the program the terms are interchanged without concern
- for specific definition. When sprite is used, it sometimes refers
- specifically to the rendering of an object
-
- #ifdef OS_ lines
- These refer to operating system dependent portions of the code.
- A windows port was actually written for the project, but
- unfortunately other aspects of the project to priority before I
- could debug the WINDOWS version.
-
- However, it actually compiled to windows at the time and ran,
- albeit in a slightly screwed up fashion(sp?) (the color palette was
- messed up). At this point, it probably will not compile cleanly to
- Windows, though finishing the port would require only a day or two
- for an experienced Windows programmer. (When I wrote the port, it
- was the first Win program I'd ever written).
-
- code for objects & function pointers associated with them- The
- object model in the program is pretty neat. Rather than defining
- the object types at compile time, object types are run-time defined
- in the world file. Orchestrating this is not easy, and sometimes it
- makes object code overly complex. However, it is interesting to
- note that you could now, for example, put the camera in eye of an
- enemy, or change one enemies pictures to change him form a human to
- a monster. You should also note that some of the later object code
- was written very close to the time a prototype was needed, and is
- as a result somewhat cryptic and inflexible.
-
- the asm files
- sliver.asm- code for inner loop of rendering walls & floors
- voxrow.asm- one set of code for inner loop of mountains (partially
- shaded)
- voxrowf.asm- secode set of mountain code (no shading)
- vrsmooth.asm- final set of mountain code (full shading). This the
- one that is almost universally used
-
- -----------------------------------------------------------------
- ---------------------
- 2.2: Data file layouts
-
- A brief explanation of file structures-
-
- The only major native file structure to the engine is the .dat
- file. It is very similar to a WAD file used in DOOM and its
- succesors. The file begins with a header w/ stucture:
-
- typedef struct WFHEADER {
- char header[8];
- long dir_entries;
- long dir_location;
- } WFHeader;
-
- Header is a name, whose first letter signifies if this is a binary
- ('B') or text file ('T'). Currently, all created files have been
- text.
-
- dir_entries is the number of entrys in the directory, or list of
- resources in the file. dir_location is the start of the directory.
- It usually comes at the end of the file.
-
- This list is made up of dir_entries number of info packets with
- this structure:
-
- typedef struct DIR_ENTRY {
- char name[8];
- long start;
- long length;
- } dir_entry;
-
- name is the name of the resource, start is location from the start
- of the file of this resource, and length is the number of items of
- this particular resource that this entry has.
-
- For more information on individual resources, and the file
- structure in general, read rayfile.h, and also the .cpp files w/
- the file prefix.
-
- -----------------------------------------------------------------
- -----------------------
- 2.3: Current known bugs
- 1. A mysterious bug plague's the sprite renderer. It is clear
- that when trees, the most common sprite, is turned off, it rarely
- crashes. This is a critical, program crashing bug
- 2. Object and wall collision algorityms are sloppy.
- Particularly wall collision. The cause objects to collide earlier
- than they should, which in some cases causes objects to appear to
- mysteriously dissapear. This should be rewritten or corrected as it
- hampers playability.
- 3. The is a bug in the BSP generator (Binary Space Tree),
- although this has no obvious effects when running the program, it
- causes the current Win version to crash on startup, and is known to
- crash the program under a debugger.
- 4. There may be more bugs in the renderer. These are most likely
- non-fatal, but must be corrected nonetheless
- 5. This is not an adequate list. I'll be the first to admit the
- program is way too buggy.
-
- -----------------------------------------------------------------
- ----------------------
- 2.4: Things needed to finalize game engine.
-
- The game engine itself is fairly complete. Various player
- movements need to be worked out, such as stafing, and control in
- general is not that well worked out.
-
- Section 3: The History
- -----------------------------
-
- 3.1: A brief history of raydeal
-
- Raydeal begins in when I'm in 11th grade. I code a DOOM engine and
- a voxel engine concurrently. I have the initial game idea of BOLO
- with a DOOM interface. Josh Glazer is initially involved, and codes
- a MAC port, and an editor, which never works. He eventually loses
- interest, sorta.
-
- At the end of 11th grade, I get hired by Cortina Entertainment, who
- wants to make a game out of my work. I take the program all the way
- to a prototype stage, almost finishing by the end of summer (w/
- actual completion by Sept/Oct.).
-
- It then sits on the HD gathering dust for about 6 months, while
- Cortina "evaluates" it. I've never heard from them, though they
- claim to still be doing the project.
-
- Say what???? You mean this is 6 month old technology???? Yes, a
- fairly unintelligent Hollywood game company didn't realize the
- potential of the technology someone was offering them, and the game
- sat there for six months.
-
- I eventually post a homepage, in which I decide to publish the
- entire source code. Why? Primarily because I 've learned that in an
- insatiable quest to make money, I let the technology get slightly
- old. I could have given a head start to amateur coders around the
- world.
-
- Various people, particularly Gene, express interest in continuing
- the project. With no corporate beuracracy, no funding, no money to
- make, and just vision and a desire to make a damn cool game, we get
- going again.
-
-
- -----------------------------------------------------------------
- ---------------------
- 3.2: A brief history of the FAQ
-
- 1.0 Matt scribles something down in WordPad
- 1.01 Gene structures the FAQ, and adds his vision
- 1.02 Matt fills in some sections for gene, and adds history.
- 1.03 Matt makes corrections, and the FAQ is ready for posting